package com.naiterui.ehp.bs.im.utils;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期工具类
 * <P>File name : DateUtils.java </P>
 * <P>Author : zhouyanxin </P>
 * <P>Date : 2015年6月25日 </P>
 */
public class DateUtils {

    /**
     * 日期格式
     */
    public static final String DATE_FORMAT1 = "yyyyMMdd";

    /**
     * 日期格式
     */
    public static final String DATE_FORMAT2 = "yyyy-MM-dd";

    /**
     * 日期格式化
     * DateUtils.formatDate()<BR>
     * <P>Author : zhouyanxin </P>
     * <P>Date : 2015年6月25日 </P>
     * @return
     */
    public static String formatDate() {
        Calendar c = Calendar.getInstance();
        Date date = c.getTime();
        DateFormat format = new SimpleDateFormat(DATE_FORMAT1);
        return format.format(date);
    }

    /**
     * 根据格式返回时间串
     * DateUtils.formatDate()<BR>
     * <P>Author : heqiang </P>
     * <P>Date : 2015年11月13日 </P>
     */
    public static String formatDate(String pattern) {
        Calendar c = Calendar.getInstance();
        Date date = c.getTime();
        DateFormat format = new SimpleDateFormat(pattern);
        return format.format(date);
    }

    /**
     * 日期格式化
     * DateUtils.formatDate()<BR>
     * <P>Author : zhouyanxin </P>
     * <P>Date : 2015年6月30日 </P>
     * @param millis
     * @param format
     * @return
     */
    public static String formatDate(long millis, String format) {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(millis);
        DateFormat df = new SimpleDateFormat(format);
        return df.format(c.getTime());
    }

    /**
     * 获取不包含秒的毫秒至
     * DateUtils.getTimeInMillisByMinute()<BR>
     * <P>Author : zhouyanxin </P>
     * <P>Date : 2015年6月29日 </P>
     * @param timeMillis
     * @return
     */
    public static Long getTimeInMillisByMinute(long timeMillis) {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(timeMillis);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        return c.getTimeInMillis();
    }

    /**
     * 比较时间是否相差在base范围内
     * DateUtils.isTimeIntervalInBase()<BR>
     * <P>Author : zhouyanxin </P>
     * <P>Date : 2015年6月29日 </P>
     * @param base
     * @param t1
     * @param t2
     * @return
     */
    public static boolean isTimeIntervalInBase(int base, long t1, long t2) {

        // 比较的起始时间必须大于比较的种植时间
        if (t1 < t2) {
            return false;
        }

        // 将毫秒值转换为日历对象
        Calendar c1 = Calendar.getInstance();
        c1.setTimeInMillis(t1);
        c1.set(Calendar.SECOND, 0);
        c1.set(Calendar.MILLISECOND, 0);

        // 将毫秒值转换为日历对象
        Calendar c2 = Calendar.getInstance();
        c2.setTimeInMillis(t2);
        c2.set(Calendar.SECOND, 0);
        c2.set(Calendar.MILLISECOND, 0);

        // 比较时间是否相差在base范围内
        if ((c1.get(Calendar.YEAR) != c2.get(Calendar.YEAR)) || (c1.get(Calendar.MONTH) != c2.get(Calendar.MONTH))
                || (c1.get(Calendar.DAY_OF_YEAR) != c2.get(Calendar.DAY_OF_YEAR)) || (c1.get(Calendar.HOUR_OF_DAY) != c2.get(Calendar.HOUR_OF_DAY))) {
            return false;
        }

        return Math.abs(c1.get(Calendar.MINUTE) - c1.get(Calendar.MINUTE)) <= base;
    }

}
